Jak spravne polapit objekt

Otázka od: Michal VOJTA

21. 7. 2004 0:03

Ahoj vsichni,
nedavno jsem resil s kolegou nasledujici problem:
Co je spravnejsi

1)
procedure TForm1.CheckBox1Click(Sender: TObject);
var
  Check : TCheckBox;
begin
  Check := Sender as TCheckBox;
end;

2)
procedure TForm1.CheckBox1Click(Sender: TObject);
var
  Check : TCheckBox;
  ChbName : String;
begin
  ChbName := (Sender as TCheckBox).Name;
  Check := TCheckBox(FindComponent( ChbName ));
end;


--
ahoj
 Michal VOJTA
 michal.vojta@iol.cz


Odpovedá: Petr Kuklik

21. 7. 2004 7:06

Ahoj,
  ja si myslim, ze by to slo spise takto,

procedure TForm1.CheckBox1Click(Sender: TObject);
var
  Check : TCheckBox;
begin
  if ( Sender is TCheckBox )
  then Check := TCheckBox(Sender)
  else Check := nil;
end;

Petr


>>> "Michal VOJTA" <michal.vojta@iol.cz> 21.7.2004 0:45:18 >>>
Ahoj vsichni,
nedavno jsem resil s kolegou nasledujici problem:
Co je spravnejsi

1)
procedure TForm1.CheckBox1Click(Sender: TObject);
var
  Check : TCheckBox;
begin
  Check := Sender as TCheckBox;
end;

2)
procedure TForm1.CheckBox1Click(Sender: TObject);
var
  Check : TCheckBox;
  ChbName : String;
begin
  ChbName := (Sender as TCheckBox).Name;
  Check := TCheckBox(FindComponent( ChbName ));
end;


--
ahoj
 Michal VOJTA
 michal.vojta@iol.cz




Odpovedá: Lebeda David

26. 7. 2004 7:54

> Co je spravnejsi
>
> 1)
> procedure TForm1.CheckBox1Click(Sender: TObject);
> var
> Check : TCheckBox;
> begin
> Check := Sender as TCheckBox;
> end;
>
> 2)
> procedure TForm1.CheckBox1Click(Sender: TObject);
> var
> Check : TCheckBox;
> ChbName : String;
> begin
> ChbName := (Sender as TCheckBox).Name;
> Check := TCheckBox(FindComponent( ChbName ));
> end;

Ahoj,

podle me vedou oba zpusoby k temuz vysledku, nicmene prvni zpusob je urcite
efektivnejsi a setrnejsi (proc prohledavat pole komponent podle nazvu?). P.
Kuklik
navrhuje reseni s pomoci is misto as - to se mi libi nejvic, i kdyz zalezi na
tom, co
pozadujes. Pokud sender nebude TCheckBox, jestli ma vzniknout vyjimka (pak je
operator as na miste) nebo ne (pak delat kontrolu pres is ve sve rezii). To ze
by Sender
nebyl checkbox, se muze stat treba tak, ze nekdo nekde funkci CheckBox1Click
zavola
rucne z programu a da ji nesmyslny parametr. Otazka je, do jake miry to je
pravdepodobne.


David Lebeda
David Lebeda